package com.smart.entity.business;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.ArrayList;
import java.util.List;

@Data
public class DictTreeNode {
    private String id;
    private String name;
    private String level;
    private String levelPath;
    private List<DictTreeNode> children = new ArrayList<>();
    private String parentId;
    private String dictValue;
    private String Type;
}
//实现类
//@Override
//public Map<String, Object> getCurrentDict() {
//    String userId = AuthUtil.getUserId();
//    // 1. 通过 userId 获取到公司 id
//    CompanyEntity companyEntities = companyDao.getCompanyNameByUserId(userId);
//    String companyIds = companyEntities.getDictId();
//
//    if (companyIds.isEmpty()) {
//        throw new RuntimeException("无法获取公司信息");
//    }
//
//    // 2. 查询该公司的所有层级点位
//    List<DictEntity> dictList = dictDao.getCurrentDict(companyIds);
//
//    // 3. 构建树形结构
//    DictTreeNode rootNode = buildOptimizedDictTree(dictList, companyIds);
//
//    // 4. 构造返回结果
//    Map<String, Object> result = new HashMap<>();
//    result.put("code", 200);
//    result.put("msg", "操作成功");
//
//    Map<String, Object> data = new HashMap<>();
//    data.put("dictTree", Collections.singletonList(rootNode));
//    result.put("data", data);
//
//    return result;
//}
//private DictTreeNode buildOptimizedDictTree(List<DictEntity> dictList, String rootId) {
//    // 构建节点映射
//    Map<String, DictTreeNode> nodeMap = new HashMap<>();
//
//    // 创建所有节点
//    for (DictEntity entity : dictList) {
//        DictTreeNode node = new DictTreeNode();
//        // 判断 dict_code 类型，设置对应的 id 名称
//        if (dict.getDictCode() != null && dict.getDictCode().matches("sys_company_\\d+_\\d+")) {
//            node.put("type", "company");
//            node.put("companyId", dict.getId()); // 公司类型
//        } else if (dict.getDictCode() == null) {
//            node.put("type", "point");
//            node.put("pointId", dict.getId());   // 点位类型
//        }
//        node.put("value", dict.getDictValue());
//        node.put("parentId", dict.getParentId());
//        node.setName(entity.getDictName());
//        node.setLevelPath(""); // 路径稍后生成
//        node.put("level", dict.getLevel());
//        nodeMap.put(entity.getId(), node);
//    }
//
//    // 找到根节点
//    DictTreeNode rootNode = nodeMap.get(rootId);
//    if (rootNode == null) {
//        throw new RuntimeException("未找到根节点");
//    }
//    rootNode.setLevelPath("1");
//
//    // 建立父子关系 & 生成路径
//    for (DictEntity entity : dictList) {
//        if (entity.getId().equals(rootId)) continue;
//
//        DictTreeNode currentNode = nodeMap.get(entity.getId());
//        String parentId = entity.getParentId();
//
//        // 处理父节点不存在的情况，默认关联到根节点
//        DictTreeNode parentNode = nodeMap.getOrDefault(parentId, rootNode);
//
//        // 生成层级路径
//        String parentPath = parentNode.getLevelPath();
//        int childIndex = parentNode.getChildren().size() + 1;
//        String currentPath = parentPath + "-" + childIndex;
//
//        currentNode.setLevelPath(currentPath);
//        parentNode.getChildren().add(currentNode);
//    }
//
//    // 按 levelPath 排序子节点
//    sortTreeNodes(rootNode.getChildren());
//
//    return rootNode;
//}
//private void sortTreeNodes(List<DictTreeNode> nodes) {
//    if (nodes != null && !nodes.isEmpty()) {
//        nodes.sort(Comparator.comparing(DictTreeNode::getLevelPath));
//    }
//}
